// 引入request
import request from '@/utils/request'
// 引入类型
import type {SpuPageListParamsModel,SpuModel ,SpuListModel,BaseSaleAttrListModel,SpuImageListModel,SpuSaleAttrListModel} from './model/spuModel'

// 定义枚举类型的接口地址
enum Api { 
  GetBaseSaleAttrList = '/admin/product/baseSaleAttrList', // 获取基础销售属性对象数组的地址
  DeleteSpuById = '/admin/product/deleteSpu', // 删除spu的地址
  GetSpuInfoListByKeyword = '/admin/product/findSpuInfoByKeyword', // 根据关键字查找spu列表地址
  GetSpuInfoById = '/admin/product/getSpuInfo', // 根据id找spu对象的地址
  GetSpuInfoListBySpuIds = '/admin/product/inner/findSpuInfoBySpuIdList', // 根据id数组找spu列表地址
  AddSpuInfo = '/admin/product/saveSpuInfo', // 保存spu对象的地址
  UpdateSpuInfo = '/admin/product/updateSpuInfo', // 修改spu对象的地址
  GetSpuInfoList = '/admin/product', // 分页的方式获取spu列表的地址
  GetSpuInfoImageList = '/admin/product/spuImageList', // 获取spu中的图片列表数据的地址
  GetSpuInfoSaleAttrList='/admin/product/spuSaleAttrList' // 获取spu中的销售属性列表数据的地址
}
// 获取基础销售属性对象数组
export const getBaseSaleAttrListApi = () => request.get<any,BaseSaleAttrListModel>(Api.GetBaseSaleAttrList)
// 根据spu的id删除对应的spu对象
export const deleteSpuByIdApi=(spuId:number)=>request.delete<any,null>(Api.DeleteSpuById+`/${spuId}`)
// 根据关键字获取spu列表数据
export const getSpuInfoListByKeywordApi=(keyword:string)=>request.get<any,SpuListModel>(Api.GetSpuInfoListByKeyword+`/${keyword}`)
// 根据spu的id获取spu的对象
export const getSpuInfoByIdApi=(spuId:number)=>request.get<any,SpuModel>(Api.GetSpuInfoById+`/${spuId}`)
// 根据spu的id数组获取spu的列表数据
export const getSpuInfoListBySpuIdsApi=(ids:number[])=>request.post<any,SpuListModel>(Api.GetSpuInfoListBySpuIds,ids)
// 保存spu对象
export const addSpuInfoApi=(spuInfo:SpuModel)=>request.post<any,null>(Api.AddSpuInfo,spuInfo)
// 修改spu对象
export const updateSpuInfoApi=(spuInfo:SpuModel)=>request.post<any,null>(Api.UpdateSpuInfo,spuInfo)
// 分页的方式获取spu列表数据
export const getSpuInfoListApi = ({ page, limit, category3Id }: SpuPageListParamsModel) => request.get<any, SpuListModel>(Api.GetSpuInfoList + `/${page}/${limit}`, { params: {category3Id}})
// 根据spu的id获取spu中的图片列表数据
export const getSpuInfoImageListApi=(spuId:number)=>request.get<any,SpuImageListModel>(Api.GetSpuInfoImageList+`/${spuId}`)
// 根据spu的id获取spu中所拥有的销售属性对象数组数据
export const getSpuInfoSaleAttrListApi = (spuId: number) => request.get<any, SpuSaleAttrListModel>(Api.GetSpuInfoSaleAttrList + `/${spuId}`)

// 添加或者修改spuInfo对象的api接口函数
export const addOrUpdateSpuInfo = (spuInfo:SpuModel) => { 
  if (spuInfo.id) {
    return request.post<any,null>(Api.UpdateSpuInfo,spuInfo)
  } else { 
    return request.post<any,null>(Api.AddSpuInfo,spuInfo)
  }
}